package com.qst.rongxiaoserver.controller;

import com.qst.rongxiaoserver.common.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

@RestController
@RequestMapping("/api/upload")
@Tag(name = "文件上传接口", description = "文件上传接口")
public class UploadFileController {
    @Value("${web.upload.path}")
    String uploadPath;   // 文件上传的路径

    @PostMapping("/file")
    @Operation(summary = "文件上传", description = "文件上传")
    public Result upload(@RequestParam("file") MultipartFile file) {
//        判断文件上传大小
        if (file.getSize() > 1024 * 1024 * 10) {
            return Result.fail("文件大小不能超过10M");
        }
        // 1. 获取文件的原始名称
        String originalFilename = file.getOriginalFilename();  // 1.jpg
        // 2. 获取文件的后缀名
        String suffixName = originalFilename.substring(originalFilename.lastIndexOf("."));   //.jpg
        // 3. 生成新的文件名
        String newFileName = UUID.randomUUID() + suffixName;
        // 4. 文件上传
        try {
            // 4.1 创建文件上传的目录
            File fileDir = new File(uploadPath , newFileName);
            // 上传文件
            file.transferTo(fileDir);   // 核心代码
            return Result.success(newFileName);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("文件上传失败");
        }

    }
}
